package com.bjsxt;
/**
 * 泛型方法与可变参数
 * 泛型方法：可以在类中定义，也可以在方法中定义  静态方法只能在方法中定义，不能在类中定义
 * 泛型类中所定义的泛型，在方法中也可以使用。但是，仅在某一个方法上使用泛型，
 这时候可以使用泛型方法
 *泛型方法是指将方法的参数类型定义成型，以便在调用时接收不同类型的参数。类型参数可以有多个，
 用 逗号隔开  如：<K,V>.定义时，类型参数一般放到返回值的前面
*非静态方法
 * 语法结构：public <泛型表示符号> void getName(泛型表示符号  name){}
 * public <泛型表示符号> 泛型表示符号 getName(泛型表示符号 name){}
 *
 * 调用泛型方法时，不需要像 泛型类 那样告诉编译器是什么类型，编译器可以自动判断出类型来
 * 静态方法：只能在方法上定义泛型，不能使用在类上定义的泛型
 * 静态方法中使用泛型时有一种情况需要注意一下，那就是静态方法 无法 访问 类 上定义的
 *语法结构：
 * public static <泛型表示符号> void getName(泛型表示符号 name){}
 *  public static <泛型表示符号> 泛型表示符号 getName(泛型表示符号 name){}
 *  */
public class MethodGeneric {
    //非静态方法
    public <T> void setName(T name){
        System.out.println(name);
    }
    //有返回值
    public <T>  T getName(T name1){
       return name1;
    }
    //静态方法
    public static <T> void getFlag(T flag){
        System.out.println(flag);
    }
    //有返回值
    public static <T> T setFlag(T flag){
        return flag;
    }

    /*可变参数*/
    /*语法结构：public <泛型表示符> void showMsq (泛型表示符...args){}*/
    public <T> void method(T...args){
        //可变参数传过来是一个数组
        //遍历
        for(T t:args){
            System.out.println(t);
        }
    }

}
